package com.fivec.javaproject.address.utils;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Security;

/**
 * @author wangyizhu
 * @version "1.8.0_131"
 * @email 2641956765@qq.com
 * @desc: 该类是一个工具类，用于封装各种类型的hash算法
 * @Time 2021/12/20 15:16
 */
public class Hash {
    /**
     * 该方法用于实现SHA256算法，并返回结果
     * @param data  需要进行计算的数据
     * @return
     */
    public static byte[] SHA256(byte[] data){
        try {
            MessageDigest digest=MessageDigest.getInstance("SHA-256");
            digest.update(data);
            return digest.digest();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        return null;
    }

    /**
     * 该方法用于对给定的数据进行ripemd160计算,并将结果返回
     * @param data 特定数据
     * @return
     */
    public static byte[] RIPEMD160(byte[] data){
        //添加对特定算法的支持
        Security.addProvider(new BouncyCastleProvider());
        try {
            MessageDigest digest=MessageDigest.getInstance("RipeMD160");
            digest.update(data);
            return  digest.digest();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
}
